#ifndef FLUFFY_H
#define FLUFFY_H

#include <QString>
#include <QtXml>
#include <QPaintDevice>

#include "drawobject.h"
#include "tagscontainer.h"
#include "fluffyexceptions.h"

//Векторное изображение
class FluffyImage : public QObject
{
    Q_OBJECT

private:
    //Ширина
    unsigned int width;

    //Высота
    unsigned int height;

    void init(unsigned int width,unsigned int height);

    //Перевод из файла в Fluffy-объект
    void loadFromXml(QString fileName);

    //Загрузить изображение из элемента
    void loadFromNode(const QDomElement &node);

public:
    FluffyImage();
    ~FluffyImage();

    //Соответствия тегов и типов
    static TagsContainer tags;

    //Создать изображение с размерами
    FluffyImage(unsigned int width,unsigned int height);

    //Собрать изображение из файла
    FluffyImage(QString fileName);

    //Собрать изображение из узла Xml
    FluffyImage(const QDomElement &node);

    // Отрисовать сцену
    void draw(QPaintDevice* device, qreal scale);

    //Перевод из объекта в xml-файл с именем объекта
    void saveToXml(QString fileName);

    //Сохранить изображение в элемент
    QDomElement saveToNode(QDomDocument &domDoc);

    //Список элементов на картинке
    QVector<DrawObject*> objects;

    //Путь к файлу для картинки
    QString imageFile;

    //Ширина
    unsigned int getWidth();

    void setWidth(unsigned int width);

    //Высота
    unsigned int getHeight();

    void setHeight(unsigned int height);
};

#endif // FLUFFY_H
